/**
 * Defines the requirements for a data structure to be used in the general graph
 * search algorithm.
 * 
 * @param <V>
 *            The vertex inteface's implementing type
 */
public interface DataStructure<V extends Vertex<V>> {

	/**
	 * Adds a path to the data structure.
	 * 
	 * @param The
	 *            path to add
	 */
	public void add(Path<V> path);

	/**
	 * Removes and returns the next path from the data structure.
	 * 
	 * @return The next path
	 */
	public Path<V> remove();

	/**
	 * Determines if the data structure is empty.
	 * 
	 * @return true if the data structure is empty, or false otherwise
	 */
	public boolean isEmpty();
}
